import Vue from 'vue'
import Vuex from 'vuex'

// 1. 导入包
import createState from 'vuex-persistedstate'
import { userAPI } from '@/api/user'

Vue.use(Vuex)

export default new Vuex.Store({
  // 防止在无意之间，直接在组件中修改vuex的数据
  strict: true,
  // 2.配置vuex插件
  plugins: [createState()],

  // 1.存入token的值，登入成功存到这个位置
  state: {
    token: '',
    user: {}// 用户信息
  },
  mutations: {
    // 2.定义修改token的值的mutation函数
    upToken (state, token) {
      state.token = token
    },
    // 更新用户数据
    updateUser (state, obj) {
      state.user = obj
    }

  },
  actions: {
    // 在vue中，任何一个函数，如果不调用，不会自定执行（生命周期函数）
    // 发送请求，获取用户 的基本信息
    async initUser (ctx) {
      // 如果请求成功，则调用相应的mutat函数，把用户信息，存储
      const res = await userAPI()
      // console.log(res.data.data)
      ctx.commit('updateUser', res.data.data)
    }
  },
  modules: {
  }
})
